#pragma once

#include <iostream>
#include <functional>
#include "log.hpp"

typedef std::function<int(int,int,char)> Fun_t;

class Task
{
private:
    int _x;
    int _y;
    char _op;
    Fun_t _func;
public:
    Task() = default;

    Task(int x,int y,char op,Fun_t func)
    :_x(x),_y(y),_op(op),_func(func)
    { }

    void operator()(const std::string& name)
    {
        //std::cout << "线程 " << name << " 处理完成, 结果是: " << _x << _op << _y << "=" << _func(_x, _y,_op) << std::endl;
        //__FILE__是一个预定义符号,表示进行编译的文件的名字,
        //__LINE__表示文件当前的行号
        logMessage(NORMAL,"%s %d+%d=%d | %s | %d",(char*)name.c_str(),_x,_y,_func(_x,_y,_op),__FILE__,__LINE__);
    }
};